<template>
  <div class="person">
    <h2>姓名：{{ name }}</h2>
    <h2>年龄：{{ age }}</h2>
    <button @click="changeName">修改名字</button>
    <button @click="changeAge">修改年龄</button>
    <button @click="showTel">查看联系方式</button>
  </div>
</template>

<script setup lang="ts" name="Person">
import {ref} from "vue";

const name = ref<string>('张三');
const age = ref<number>(18);
const tel: string = '13866668888';

const showTel = (): void => {
  alert(tel);
}

const changeName = (): void => {
  name.value = '李四';
}

const changeAge = (): void => {
  age.value++;
}
</script>
<!--
<script lang="ts">
export default {
  name: 'Person'
}
</script>-->

<!--<script lang="ts">
export default {
  name:'Person',
  // console.log(this) // setup 函数中的 this 是 undefined，vue3 中已经弱化 this 了
  // setup 比 beforeCreated 生命周期还要早
  setup(){
    // 数据，原来写在data中（注意：此时的name、age、tel数据都不是响应式数据）
    let name = '张三'
    let age = 18
    let tel = '13888888888'

    // 方法，原来写在methods中
    function changeName(){
      name = 'zhang-san' //注意：此时这么修改name页面是不变化的
      console.log(name)
    }
    function changeAge(){
      age += 1 //注意：此时这么修改age页面是不变化的
      console.log(age)
    }
    function showTel(){
      alert(tel)
    }

    // 返回一个对象，对象中的内容，模板中可以直接使用
    return {name,age,tel,changeName,changeAge,showTel}
  }
}
</script>-->

<style lang="scss" scoped>
.person {
  background-color: skyblue;
  box-shadow: 0 0 10px;
  border-radius: 10px;
  padding: 20px;

  button {
    margin: 0 5px;
  }
}
</style>
